#include "logindialog.h"
#include "./ui_logindialog.h"

#include <QFile>
#include <QMessageBox>
#include <QRegularExpression>

using namespace std;

logindialog::logindialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::logindialog)
{
    ui->setupUi(this);
    // 当 label 的大小发生变化时，其内容（比如图片）将会自动缩放以适应新的大小
    ui->imgLabel->setScaledContents(true);
    // 设置窗体宽高
    resize(ui->imgLabel->width(), ui->imgLabel->height());
    // 固定窗体宽高不允许拖动修改大小，因为resize了所以可以直接拿宽高
    setFixedSize(width(), height());
    // 设置弹窗标题
    setWindowTitle("驾校科一考试登录");
    // 修改窗体属性 - 比如去掉一些标题栏按钮
    setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
}

logindialog::~logindialog()
{
    delete ui;
}

// 点击登录 - ui上按钮插槽事件 - on_控件id_clicked
void logindialog::on_loginBtn_clicked()
{
    // 输入的邮箱
    QString accountText = ui->accountEdit->text();
    // 正则表达式验证是否是邮箱
    QRegularExpression rx("^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$");
    // 邮箱是否正确
    QRegularExpressionMatch match = rx.match(accountText);
    bool res = match.hasMatch();
    if(!res){
        QMessageBox::information(this, "提示","邮箱地址错误，给我检查检查！！");
        // ui->accountEdit->clear();
        ui->codeEdit->clear();
        ui->accountEdit->setFocus();
        return;
    }
    // 用户表文件
    QString filename = "/Users/yuanxulong/longpc/Project/Learn/QT/QtLearn/res/account.txt";
    // 读取的文件行数据
    QString readLineText;
    // 用于保存获取到的当前行的邮箱和密码
    QStringList readLineTextSplitList;

    // 获取到文件
    QFile file(filename);
    // 通过文件拿到文本流 - 默认为只读
    QTextStream stream(&file);
    // 打开失败的情况
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        QMessageBox::information(this,"提示","读取账号数据文件失败！");
        return;
    }
    // 输入的密码
    QString codeText = ui->codeEdit->text();
    // 没有到底就继续执行
    while(!stream.atEnd()){
        // 拿到行
        readLineText = stream.readLine();
        // 分割账密
        readLineTextSplitList = readLineText.split(",");
        // 账号匹配就直接返回
        if(accountText == readLineTextSplitList.at(0)){
            // 密码错误
            if(codeText != readLineTextSplitList.at(1)){
                QMessageBox::information(this,"提示","密码错误了，你给我小心点！！");
                ui->accountEdit->clear();
                ui->codeEdit->clear();
                ui->codeEdit->setFocus();
                file.close();
                return;
            }
            // 账号密码都正确了，就进入到首页
            // QMessageBox::information(this,"提示","Nice 算你小子厉害，去练题吧！！");
            file.close();
            done(Accepted);
            return;
        }
    }
    QMessageBox::information(this,"提示","没有这个账号，别乱输入！！");
    ui->accountEdit->clear();
    ui->codeEdit->clear();
    ui->accountEdit->setFocus();
    file.close();

}

// 点击取消
void logindialog::on_cancelBtn_clicked()
{
    QMessageBox::information(this,"提示","关闭科一系统");
    done(Rejected);
}
